x11: Add gdk_x11_window_set_utf8_property
authorColin Walters <walters@verbum.org>
Fri, 25 Nov 2011 22:21:05 +0000 (17:21 -0500)
committerRyan Lortie <desrt@desrt.ca>
Mon, 19 Dec 2011 17:51:07 +0000 (12:51 -0500)
A convenience function to manipulate UTF-8 X11 properties; no point
in wrapping each one in individual setters.

gdk/gdk.symbols
gdk/x11/gdkwindow-x11.c
gdk/x11/gdkwindow-x11.h

index e6e366b401aa8e967046e883acc8920768ed3046..21f1667fc912046d0471fa11679eec98476b0331 100644 (file)
@@ -582,6 +582,7 @@ gdk_x11_window_move_to_current_desktop
 gdk_x11_window_set_theme_variant
 gdk_x11_window_set_hide_titlebar_when_maximized
 gdk_x11_window_set_user_time
+gdk_x11_window_set_utf8_property
 gdk_x11_xatom_to_atom
 gdk_x11_xatom_to_atom_for_display
 #endif
index 688655f0e891b9dcd4ccca5a9ccaadcd4c553a84..1ba3e24238e61f5ff25d6f35664a3c1a5761fde5 100644 (file)
@@ -3087,25 +3087,19 @@ gdk_x11_window_set_user_time (GdkWindow *window,
 }
 
 /**
- * gdk_x11_window_set_theme_variant:
+ * gdk_x11_window_set_utf8_property:
  * @window: (type GdkX11Window): a #GdkWindow
- * @variant: the theme variant to export
- *
- * GTK+ applications can request a dark theme variant. In order to
- * make other applications - namely window managers using GTK+ for
- * themeing - aware of this choice, GTK+ uses this function to
- * export the requested theme variant as _GTK_THEME_VARIANT property
- * on toplevel windows.
+ * @name: Property name, will be interned as an X atom
+ * @value: (allow-none): Property value, or %NULL to delete
  *
- * Note that this property is automatically updated by GTK+, so this
- * function should only be used by applications which do not use GTK+
- * to create toplevel windows.
- *
- * Since: 3.2
+ * This function modifies or removes an arbitrary X11 window
+ * property of type UTF8_STRING.  If the given @window is
+ * not a toplevel window, it is ignored.
  */
 void
-gdk_x11_window_set_theme_variant (GdkWindow *window,
-                                  char      *variant)
+gdk_x11_window_set_utf8_property  (GdkWindow *window,
+                                  const gchar *name,
+                                  const gchar *value)
 {
   GdkDisplay *display;
 
@@ -3114,19 +3108,19 @@ gdk_x11_window_set_theme_variant (GdkWindow *window,
 
   display = gdk_window_get_display (window);
 
-  if (variant != NULL)
+  if (value != NULL)
     {
       XChangeProperty (GDK_DISPLAY_XDISPLAY (display),
                        GDK_WINDOW_XID (window),
-                       gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT"),
+                       gdk_x11_get_xatom_by_name_for_display (display, name),
                        gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8,
-                       PropModeReplace, (guchar *)variant, strlen (variant));
+                       PropModeReplace, (guchar *)value, strlen (value));
     }
   else
     {
       XDeleteProperty (GDK_DISPLAY_XDISPLAY (display),
                        GDK_WINDOW_XID (window),
-                       gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT"));
+                       gdk_x11_get_xatom_by_name_for_display (display, name));
     }
 }
 
@@ -3173,6 +3167,30 @@ gdk_x11_window_set_hide_titlebar_when_maximized (GdkWindow *window,
     }
 }
 
+/**
+ * gdk_x11_window_set_theme_variant:
+ * @window: (type GdkX11Window): a #GdkWindow
+ * @variant: the theme variant to export
+ *
+ * GTK+ applications can request a dark theme variant. In order to
+ * make other applications - namely window managers using GTK+ for
+ * themeing - aware of this choice, GTK+ uses this function to
+ * export the requested theme variant as _GTK_THEME_VARIANT property
+ * on toplevel windows.
+ *
+ * Note that this property is automatically updated by GTK+, so this
+ * function should only be used by applications which do not use GTK+
+ * to create toplevel windows.
+ *
+ * Since: 3.2
+ */
+void
+gdk_x11_window_set_theme_variant (GdkWindow *window,
+                                  char      *variant)
+{
+  return gdk_x11_window_set_utf8_property (window, "_GTK_THEME_VARIANT", variant);
+}
+
 #define GDK_SELECTION_MAX_SIZE(display)                                 \
   MIN(262144,                                                           \
       XExtendedMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) == 0     \
index 740fb08b76425761a05f07431a3867f0851dfe4c..bda2a58015593770c4e4007af6ff7259b2a49928 100644 (file)
@@ -158,6 +158,10 @@ GType gdk_window_impl_x11_get_type (void);
 void            gdk_x11_window_set_user_time        (GdkWindow *window,
                                                     guint32    timestamp);
 
+void            gdk_x11_window_set_utf8_property    (GdkWindow *window,
+                                                    const gchar *name,
+                                                    const gchar *value);
+
 GdkToplevelX11 *_gdk_x11_window_get_toplevel        (GdkWindow *window);
 void            _gdk_x11_window_tmp_unset_bg        (GdkWindow *window,
                                                     gboolean   recurse);